This invention relates to graphic symbol generators, and more particularly to improvements in the generation of high-quality graphic symbols such as letters, numerals, punctuation marks and the like, commonly used for composing lines of information for display, or recording on film, under control of a programmed data processing system.
The current practice in generating graphic symbols with a cathode-ray tube (CRT) for display, or recording on film, is to position the electron beam at a starting point for the symbol and deflecting the beam through a sequence of parallel strokes covering the area of the symbol while modulating the beam intensity, i.e., while turning the beam on and off. The data for the control of beam intensity is stored in the memory of the data processor as a bit stream of packed fields that are read out serially and unpacked as a sequence of strokes are generated in a predetermined pattern. A system disclosed in U.S. Pat. No. 3,305,841 is representative of this current practice.
To minimize the number of bits required to generate a symbol, i.e., to provide deflection and intensity control, various data compression techniques may be employed. For example, all strokes may be uniformly spaced so that to progress from one stroke to the next, the deflection control system can be automatically incremented a predetermined or preprogrammed amount in a direction normal to the strokes (along the X axis assuming an upright symbol on a horizontal line). To actually generate the symbol, it is then simply a matter of programming the intensity control in terms of turn-on and turn-off points for the beam in each stroke.
The control data can be further compressed by specifying the turn-on and turn-off points of only the first stroke relative to a fixed baseline, e.g., by specifying the points in terms of units of stroke length from a baseline. The turn-on and turn-off points of each successive stroke are then specified in terms of changes or "deltas" in the respective turn-on and turn-off points, i.e., by specifying the points in each stroke relative to corresponding points in the preceding stroke. In the case of a stroke having a discontinuity with the preceding stroke, such as for generating the dot over the letter i, the first stroke of the dot would be treated in the program the same as the first stroke of the symbol to specify the turn-on and turn-off points with reference to the baseline. The points in subsequent strokes are then specified only as changes as before until the end of the symbol is reached. The end is signified by a programmed code in the stream of codes used to specify the changes. An example of this data compression technique may be found in U.S. Pat. No. 3,471,848.
A system utilizing a symbol generator for display, or film recording, of text may be organized in the following manner. The text is first keyboarded into a data processing system. The keyboarded data are continuously stored in a bulk memory, such as a magnetic disc or tape. A central processing unit then accepts and buffers the data from the bulk memory for processing through to the face of a CRT for display. A camera system photographs the face of the CRT if a film record is desired. The film can later be used to produce plates for offset printing of copies. The CRT system is provided with a programmable control of typically 16,000 by 16,000 points, and can be driven to produce 5,000 or more symbols per second, each being accurately positioned and uniquely drawn to a specified font.
The central processing unit is a programmed digital computer provided with a repertoire of symbol control codes that may be called out of a core memory storage. Typically, a standard set of symbols will be stored for each of the fonts required by the stored program. Because each symbol for each font requires a separate packed stream of control codes to be stored, the need for compression of the control data can be readily appreciated. To provide greater flexibility in the composition of the text and the format used, without having a provide additional sets of symbols, it is desirable to be able to vary the size of any symbol called out.
A common technique for varying size consists of counting units of stroke length at a programmed clock rate while a stroke generator produces the strokes at a standard rate. Changing the clock rate then changes the height of the symbol. The width of the character is changed proportionately by changing the predetermined stroke spacing and varying the beam diameter by adjusting the CRT focus through an 8-bit register loaded by the stored program of the data processing system. In that manner the size of the symbol may be changed without distortion.
The degree to which size may be varied by changing the clock rate is a function of the degree of clock rate control available. For example, if the clock rate is halved the size is doubled. If halved again, the size is further increased by a factor of two. To be able to control the size to a virtually infinite degree from some maximum to some minimum, without a rather elaborate and complex control for the clock rate, imposes a problem. The capability of providing italicized symbols in all sizes without further complicating the control system in general and the size control in particular, imposes still another problem.
Yet another problem is providing a baseline for the symbols to be produced. Since a certain space bounded between two parallel lines will define a line of text, it would be appropriate to use one of the two lines as the baseline. Prior art systems have elected the upper line since some symbols, notably some lower case letters, extend below the line. With the baseline at the top, every stroke can be referenced to the baseline without any difficulty, and simply continued down below the lower line as far as necessary to complete the symbol. A disadvantage of that solution is that most lower case letters do not extend to the upper line so that in most cases, each stroke must traverse the empty space above the symbol before the beam is turned on. Once the beam is turned off for the last time in a given stroke, that stroke can be terminated, but for most strokes, the beam will have been deflected from the upper line, the baseline, to the lower line. It would be better to start the strokes at the lower line and thus be able to terminate a majority of the strokes once the beam has been turned off for the last time well before the beam has been deflected the full space between the lower and upper lines. The time saved in each line of composition would be significant, but the problem then is to accommodate symbols that extend below the lower line if that lower line is to be used as the baseline.